package com.tomandjerry.coolanim.lib.letter;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.graphics.Canvas;
import android.graphics.Paint;
import com.tomandjerry.coolanim.lib.Config;
/**
* 字母i的绘制以及动画
* Created by yanxing on 16/2/18.
*/
public class ILetter extends Letter {
public final static int STROKE_WIDTH = 20;
public final static int WIDTH = STROKE_WIDTH;
public final static int LENGTH = 120;
private int mCurValue;
private boolean isStart = false;
private Paint mPaint;
// 竖线弹出的时间
private int mDuration1 = mDuration/3*2;
// 圆球弹出的时间
private int mDuration2 = mDuration/3;
// 竖线变化的长度
private float mLength1;
// 圆球弹出的变化高度
private float mLength2;
// 圆球的半径
private int mRadius;
public ILetter(int x, int y) {
super(x, y);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Config.WHITE);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(20);
mCurY += LENGTH / 2;
}
@Override
public void startAnim() {
ValueAnimator animator = ValueAnimator.ofInt(0, mDuration1 + mDuration2);
animator.setDuration(mDuration1 + mDuration2);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
if (!isStart) {
return;
}
mCurValue = (int) animation.getAnimatedValue();
if (mCurValue <= mDuration1) {
mLength1 = LENGTH * mCurValue / mDuration1;
} else {
mCurValue -= mDuration1;
mRadius = 12 * mCurValue / 500;
mLength2 = 30 * mCurValue / 500;
}
}
});
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
isStart = true;
mRadius = 0;
}
});
animator.start();
}
@Override
public void drawSelf(Canvas canvas) {
if (isStart) {
// 绘制竖线
canvas.drawLine(mCurX, mCurY, mCurX, mCurY - mLength1, mPaint);
// 绘制圆点
canvas.drawCircle(mCurX, mCurY - mLength1 + 30 - mLength2 - 20, mRadius, mPaint);
}
}
}